/**
 * 1. 书P81 always语句
 * 2. 书P85 基于延迟的时序控制
 **/

module counter(
    output reg [4 : 0] cnt,
    input [4 : 0] data,
    input clk, rst_, load
);
    always @(posedge clk or negedge rst_) begin
        if (!rst_) begin
            cnt <= 0;
        end else begin
            if (load) begin
                cnt <= data;
            end else begin
                cnt <= cnt + 1;
            end
        end
    end
endmodule
